package logindbmanager

// // queryAreaData 通过区的编号查询区名称
// func (this *LoginDBManager) queryAreaData(aid uint64) (result *protoMsg.AreaMD) {
// 	result = &protoMsg.AreaMD{}
// 	if err := this.MysqlDB.Where("aid = ?", aid).First(result).Error; err != nil {
// 		logger.Warnf("LoginDBManager QueryAreaInfo err: %s", err)
// 		return nil
// 	}
// 	return
// }

// // QueryAreaList 查询全部区域数据
// func (this *LoginDBManager) QueryAreaList() (areas []*protoMsg.AreaMD) {
// 	this.MysqlDB.Find(&areas)
// 	return
// }
// func (this *LoginDBManager) CreateOneAreaInfo(areaIn *protoMsg.AreaMD) *protoMsg.AreaMD {
// 	if err := this.MysqlDB.Unscoped().Save(&areaIn).Error; err != nil {
// 		logger.Error("Create Area:", err)
// 		return nil
// 	}
// 	//从缓存中更新 Name 或者 添加一个空的大区
// 	util.UsingWiter(&this.lkGlobalSrvList, func() {
// 		find := false
// 		for _, v := range this.GlobalSrvList.AreaList {
// 			if v.AreaID == areaIn.AreaID {
// 				find = true
// 				v.AreaName = areaIn.AreaName
// 				break
// 			}
// 		}
// 		if !find {
// 			this.GlobalSrvList.AreaList = append(this.GlobalSrvList.AreaList, login.AreaInfo{
// 				AreaID:    areaIn.AreaID,
// 				AreaName:  areaIn.AreaName,
// 				GroupList: nil,
// 			})
// 		}
// 	})
// 	return areaIn
// }
// func (this *LoginDBManager) DeleteAreaInfo(ids []uint64, force bool) (areaOut []*protoMsg.AreaMD, groups []*protoMsg.GroupMD) {
// 	//如果大区下存在游戏服,则不允许删除!
// 	if !force {
// 		query1 := this.MysqlDB.Scopes()
// 		query1 = query1.Model(&protoMsg.GroupMD{}).Where("aid in ?", ids).Find(&groups)
// 		if len(groups) > 0 {
// 			return
// 		}
// 	}

// 	if err := this.MysqlDB.Model(&protoMsg.AreaMD{}).Where("aid in ?", ids).Find(&areaOut).Delete(nil).Error; err != nil {
// 		logger.Error("DeleteArea Area:", err)
// 		return nil, nil
// 	}

// 	//从缓存中删除这些大区
// 	util.UsingWiter(&this.lkGlobalSrvList, func() {
// 	ForLoop:
// 		for index, ainfo := range this.GlobalSrvList.AreaList {
// 			if slices.Contains(ids, ainfo.AreaID) {
// 				this.GlobalSrvList.AreaList = append(this.GlobalSrvList.AreaList[:index], this.GlobalSrvList.AreaList[index+1:]...)
// 				goto ForLoop
// 			}
// 		}
// 	})
// 	return areaOut, groups
// }

// func (this *LoginDBManager) CreateOrUpdateGroupInfo(inData *login.GroupBaseInfo) (outData *protoMsg.GroupMD) {
// 	if inData.GroupID != 0 {
// 		//如果是已有数据,则更新缓存 和 DB
// 		util.UsingWiter(&this.lkGroupList, func() {
// 			if v, ok := this.groupList[inData.GroupID]; ok {
// 				outData = &protoMsg.GroupMD{}
// 				*outData = *v
// 				if cols := this.compareAndUpdateGroupMDByGroupBase(outData, inData); len(cols) != 0 {
// 					query := this.MysqlDB.Model(&protoMsg.GroupMD{}).Where("gid = ?", inData.GroupID)
// 					if err := query.UpdateColumns(cols).Error; err != nil {
// 						logger.Error("CreateOrUpdateGroupInfo DB UpdateColumns Err:", err)
// 						outData = nil //失败的情况
// 						return
// 					}
// 					*v = *outData
// 					return
// 				}
// 				//outData = nil // 此处是完全相同
// 				return
// 			}
// 		})
// 		if outData != nil {
// 			this._updateAckListByGroupBaseData(inData)
// 			return
// 		}
// 	}

// 	//新插入
// 	inMd := &protoMsg.GroupMD{
// 		GroupID:     inData.GroupID,
// 		GName:       inData.GroupName,
// 		AreaID:      inData.AreaID,
// 		IsRecommend: false,
// 		IsNew:       false,
// 		SrvOpenTime: 0,
// 		SrvStatus:   0,
// 		EndRegTime:  "",
// 		Load:        0,
// 		Sum:         0,
// 		CreatedAt:   time.Now(),
// 		UpdatedAt:   time.Now(),
// 		Args:        nil,
// 	}
// 	this.compareAndUpdateGroupMDByGroupBase(inMd, inData)
// 	if err := this.MysqlDB.Unscoped().Save(inMd).Error; err != nil {
// 		logger.Error("Create Area:", err)
// 		return nil
// 	}
// 	inData.GroupID = inMd.GroupID //如果为0 则更新下

// 	//从缓存中更新 游戏服的数据 或者 添加游戏区服到
// 	this._updateAckListByGroupBaseData(inData)
// 	util.UsingWiter(&this.lkGroupList, func() {
// 		if this.groupList[inMd.GroupID] != nil {
// 			logger.Warn("区服已存在 这里会覆盖; 不过理论上不会发生,因为此处代码为新增加的区服")
// 		}
// 		this.groupList[inMd.GroupID] = inMd
// 	})
// 	return inMd
// }

// func (this *LoginDBManager) _updateAckListByGroupBaseData(inData *login.GroupBaseInfo) {
// 	util.UsingWiter(&this.lkGlobalSrvList, func() {
// 		find := false
// 		for _, aInfo := range this.GlobalSrvList.AreaList {
// 			if aInfo.AreaID == inData.AreaID || aInfo.AreaID == 0 {
// 				for _, ginfo := range aInfo.GroupList {
// 					if ginfo.GroupID == inData.GroupID {
// 						find = true
// 						ginfo.UpdateFromBase(inData)
// 					}
// 				}
// 				if !find {
// 					if aInfo.AreaID == 0 && !(inData.IsRecommend != nil && *inData.IsRecommend) {
// 						continue //推荐大区 如果不是推荐服 则不新加
// 					}
// 					var newGinfo = &login.GroupInfo{}
// 					newGinfo.UpdateFromBase(inData)
// 					aInfo.GroupList = append(aInfo.GroupList, newGinfo)
// 					aInfo.SortGroup()
// 					return
// 				}
// 			}
// 		}
// 	})
// }
// func (this *LoginDBManager) DeleteGroup(ids []uint32) (groups []*protoMsg.GroupMD) {
// 	if err := this.MysqlDB.Model(&protoMsg.GroupMD{}).Where("gid in ?", ids).Find(&groups).Delete(nil).Error; err != nil {
// 		logger.Error("DeleteGroup:", err)
// 		return nil
// 	}

// 	//从缓存中删除这些游戏服
// 	util.UsingWiter(&this.lkGlobalSrvList, func() {
// 		for _, ainfo := range this.GlobalSrvList.AreaList {
// 		ForLoop:
// 			for index2, ginfo := range ainfo.GroupList {
// 				if slices.Contains(ids, ginfo.GroupID) {
// 					ainfo.GroupList = append(ainfo.GroupList[:index2], ainfo.GroupList[index2+1:]...)
// 					goto ForLoop
// 				}
// 			}
// 		}
// 	})
// 	util.UsingWiter(&this.lkGroupList, func() {
// 		for _, gid := range ids {
// 			if _, ok := this.groupList[gid]; ok {
// 				delete(this.groupList, gid)
// 			}
// 		}
// 	})
// 	return groups
// }

// //// InitArea 初始化数据库数据
// //func (this *LoginDBManager) InitArea() {
// //	if this.MysqlDB.First(&protoMsg.AreaMD{}).Error != gorm.ErrRecordNotFound {
// //		return
// //	}
// //	if err := this.MysqlDB.Create(&protoMsg.AreaMD{
// //		AreaName: "【1区】 气吞山河",
// //	}).Error; err != nil {
// //		logger.Error("InitArea:", err)
// //	}
// //}
